#define _GNU_SOURCE // 声明可以使用扩展语法
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>  // gettid()是当前库的一个扩展语法 

// first线程的线程函数
void *first_thread_fun(void *arg) {
    printf("first线程(%d)开始执行 \n", gettid());

    return NULL;
}

// second线程的线程函数
void *second_thread_fun(void *arg) {
    printf("second线程(%d)开始执行 \n", gettid());

    return NULL;
}

int main(int argc, char const *argv[])
{
    printf("main线程(%d)开始执行 \n", gettid());

    // 创建2个分线程
    pthread_t pt1, pt2;
    pthread_create(&pt1, NULL, first_thread_fun, NULL);
    pthread_create(&pt2, NULL, second_thread_fun, NULL);
    printf("main线程(%d)继续执行 pt1=%ld, pt2=%ld \n", gettid(), pt1, pt2);

    //等待分线程结束
    pthread_join(pt1, NULL);
    pthread_join(pt2, NULL);

    printf("main线程(%d)即将结束 \n", gettid());

    return 0; // main函数结束 =》 主线程就会结束 =》 主进程就会结束 =》还未执行的所有线程函数就不会执行
}
